from odoo import models, fields, _
from odoo.exceptions import UserError


class Stu(models.Model):
    _name = 'stu.success'
    _description = '通过的面试者信息'
    name = fields.Char(
        '姓名',
        #  required=True
    )
    telephone = fields.Char(
        '联系电话',
        #  required=True
    )
    q_q = fields.Char(
        'QQ号',
        #  required=True
    )

    e_mail = fields.Char(
        'E_mail',
        #  required=True
    )
    grade = fields.Selection([
        ('2017', '2017'),
        ('2018', '2018'),
        ('2019', '2019'),
    ], string='所在年级', defaut='2019', index=True,
        # required=True
    )

    school = fields.Selection([
        ('计算机与信息工程学院', '计算机与信息工程学院'),
        ('外国语学院', '外国语学院'),
        ('马克思主义学院', '马克思主义学院'),
        ('数学与统计学学院', '数学与统计学学院'),
        ('体育学院', '体育学院'),
        ('文学院', '文学院'),
        ('艺术学院', '艺术学院'),
        ('新闻传播学院', '新闻传播学院'),
        ('政法与公共管理学院', '政法与公共管理学院'),
        ('资源环境学院', '资源环境学院'),
        ('历史文化学院', '历史文化学院'),
        ('化学化工学院', '化学化工学院'),
        ('物理与电子科学学院', '物理与电子科学学院'),
        ('教育学院', '教育学院'),
        ('哲学院', '哲学院'),
        ('生命科学学院', '生命科学学院'),
        ('材料科学与工程学院', '材料科学与工程学院'),
        ('商学院', '商学院')
    ], string='所在学院', defaut='计算机与信息工程学院', index=True,
        #   required=True
    )
    classroom = fields.Char(
        '所在班级',
        # required=True
    )
    adjust = fields.Selection([
        ('接受', '接受'),
        ('拒绝', '拒绝')
    ], string='调剂态度', defaut='接受',
        #   required=True
    )

    sex = fields.Selection([
        ('男', '男'),
        ('女', '女')
    ], string='性别', defaut='男',
        #   required=True
    )

    ability = fields.Selection([
        ('预处理组', '预处理组'),
        ('前端组', '前端组'),
        ('后端组', '后端组'),
        ('测试组', '测试组'),
        ('产品经理', '产品经理'),
    ], string='意向组别', defaut='预处理组', index=True,
        #   required=True
    )
    # language = fields.Selection([
    #     ('python', 'python'),
    #     ('java', 'java'),
    #     ('golang', 'golang'),
    #     ('前端', '前端'),
    #     ('c#', 'c#'),
    #     ('c/c++ ', 'c/c++'),
    # ], string='最熟悉的编程语言', defaut='python', index=True, required=True)
    language = fields.Many2many(
        'info.language', string='曾了解过的编程语言',
        # required=True
    )
    self_introduction = fields.Html(
        '自我介绍',
        # required=True
    )
    self_interest = fields.Html(
        '兴趣方向',
        # required=True
    )
    self_plan = fields.Html(
        '入坊规划',
        # required=True
    )
    color = fields.Integer()
    house_ids = fields.One2many(
        'user.success',
        'guest_id',
        string='面试官评语',
        #  required=True,
        ondelete='set null',
    )
    is_user = fields.Selection(
        [
            (0, '非用户'),
            (1, '已成为用户'),
        ],
        string='是否成为系统用户', default=0,
        # readonly=True,
        copy=False, track_visibility='onchange'
    )

    def to_info(self):
        new_passd = '$pbkdf2-sha512$25000$S.kdQ0gJAWBsLSWEcM753w$9LTeLUms65K9CWfQEQh1Qr/O5wugp26shOc.W.14bL81vKtEyeCaGxqD14djmhnF8pf/1DmGeZxXiap95eeo3Q'

        self.ensure_one()

        if self.is_user == 1:
            raise UserError(_('%s已经存在用户列表中!') % self.name)
        # 有则报错
        else:
            check_as_superuser = self.env['res.partner'].sudo()
            # sudo():使用现有数据集创建一个新运行环境，得到一个基于新运行环境的数据集的拷贝
            check_as_superuser.create({
                'name': self.name,
                'email': self.email
            })
            # 查询人员在res_partner中的主键，用于创建用户时关联
            sql_query = """SELECT id FROM res_partner where name = '{name}'""".format(
                name=self.name)
            self.env.cr.execute(sql_query)
            result = self.env.cr.dictfetchall()
            check_as_superuser = self.env['res.users'].sudo()
            check_as_superuser.create({
                'partner_id': result[0]['id'],
                'active': 't',
                'login': self.email
            })
            # 更改初识用户的初始密码为123456
            sql_query = """update res_users set password = '{password}' where login = '{email}'""".format(
                password=new_passd, email=self.email)
            self.env.cr.execute(sql_query)
            self.is_user = 1
        # logger.info("Here is the name: %s", result)
        check_as_superuser = self.env['person.info'].sudo()
        # sudo():使用现有数据集创建一个新运行环境，得到一个基于新运行环境的数据集的拷贝
        check_as_superuser.create({
            'id': self.id,
            'telephone': self.telephone,
            'name': self.name,
            'q_q': self.q_q,
            'grade': self.grade,
            'school': self.school,
            'classroom': self.classroom,
            'sex': self.sex,
            'ability': self.ability.id,
            'email': self.email
        })
        return {
            'type': 'ir.actions.act_window',
            'view_type': 'form',
            'view_mode': 'tree,form',
            'res_model': 'person.info',
            'target': 'new',
        }
        # 此处return作为悬浮式页面跳转
